package com.ruoyi.web.admin.data.command;

import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 命令处理器工厂
 * 负责创建和管理不同类型的命令处理器
 *
 * @author 10100
 */
@Component
@Data
public class CommandHandlerFactory {

    private final Map<String, CommandHandler> handlerMap = new HashMap<>();

    //private List<CommandHandler> handlers;

    @Autowired
    public CommandHandlerFactory(List<CommandHandler> handlers) {
        for (CommandHandler handler : handlers) {
            handlerMap.put(handler.getCommandType(), handler);
            System.out.println("注册命令处理器: " + handler.getCommandType());
        }
    }

    /**
     * 获取命令处理器
     *
     * @param commandType 命令类型
     * @return 对应的命令处理器，如果没有找到则返回默认处理器
     */
    public CommandHandler getHandler(String commandType) {
        return handlerMap.get(commandType);
    }
}